Mac App Store 应用程序提交指南 您所在的位置:网站首页 appstore distribution Mac App Store 应用程序提交指南

Mac App Store 应用程序提交指南

2024-06-02 12:12| 来源: 网络整理| 查看: 265

Mac App Store 应用程序提交指南

本指南提供以下相关资讯:

如何在 macOS 上为 Electron 应用签名;如何在 Mac App Store (MAS) 上提交 Electron 应用;对于 MAS 构建版本的局限性。要求​

要为 Electron 应用签名,则必须首先安装下列应用:

Xcode 11 或更高版本。@electron/osx-sign npm 模块。

您还必须注册一个苹果开发者帐户,并加入 苹果开发者计划。

为 Electron 应用签名​

Electron应用可以通过 Mac 应用商店或其外部进行发布。 每种方式都需要不同的签名和测试方法。 本指南侧重于通过 Mac 应用商店进行发布,也会提及其他方法。

以下步骤描述了如何从 Apple 获得证书,如何对Electron应用程序进行签名以及如何测试它们。

获取证书​

获得签名证书的最简单方法是使用 Xcode:

打开Xcode并打开“帐户”首选项;使用您的 Apple 帐户登录;选择一个团队并单击"管理证书";在签名证书表的左下角,单击添加按钮 (+),并添加以下证书:"Apple Development""Apple Distribution"

“Apple Development”证书用于在Apple Developer网站上注册的计算机上签署用于开发和测试的应用程序。 注册方法会在准备配置文件中描述。

带有"Apple Development"证书签名的应用无法提交到Mac 应用商店。 为此,应用程序必须使用"Apple Distribution"证书进行签名。 但请注意,使用"Apple Distribution"证书签名的应用程序不能直接运行,它们必须由 Apple 重新签名才能运行,也就是只有从 Mac 应用商店下载后才能运行。

其它证书​

您可以注意到还有其他类型的证书。

"Developer ID Application"证书用于将应用发布到Mac 应用商店以外的地方之前签名。

"Deceloper ID Installer"和"Mac Installer Distribution"证书用于签署 Mac 安装程序包,而不是应用程序本身。 大多数Electron应用不使用Mac Installer Package,因此通常不需要它们。

完整的证书类型列表可以在这里找到。

使用 "Apple Development" 和 "Apple Distribution" 证书签名的应用程序只能在 App Sandbox下运行, 所以他们必须使用Electron 的 MAS 构建。 然而,“Developer ID Application”证书没有这个限制,因此,用其签名的应用既可以使用普通构建也可以使用 Electron 的 MAS 构建。

传统证书名称​

Apple在过去几年中一直在更改证书的名称,您可能会在阅读旧文档时遇到这些证书,并且一些工具仍然在使用旧名称。

“Apple Distribution”证书也叫做“3rd Party Mac Developer Application”和“Mac App Distribution”。“Apple Development”证书也叫做“Mac Developer”和“Development”。准备配置配置文件​

如果您想在将应用提交给Mac App Store之前在本地机器上测试您的应用, 您必须使用"Apple Development"证书签名该应用,并在程序包中嵌入配置文件。

要 创建一个配置文件,您可以按照以下步骤:

在 Apple Developer 网站上打开"证书、标识符 & 配置文件"页面。在“标识符”页面为您的应用添加一个新的App ID。在"设备"页面中注册本地计算机。 您可以在"系统信息"应用的"硬件"页面中找到机器的"设备 ID"。在“Profiles”页面注册一个新的配置文件,然后下载到 /path/to/yourapp.provisionfile。启用Apple的应用沙箱​

提交到 Mac App Store 的应用程序必须在 Apple App Sandbox下运行, 并且只有Electron的 MAS 构建可以使用App Sandbox 运行。 在 App Sandbox 下运行时,Electron 的标准 darwin 构建将无法启动。

当使用 @electron/osx-sign 对应用程序进行签名时,它会自动将必要的权限添加到您的应用程序的权限中,但如果您使用自定义权限,则必须确保添加了应用沙盒能力:

DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> com.apple.security.app-sandbox 不使用 electron-osx-sign的额外步骤​

如果您在不使用 @electron/osx-sign 的情况下签署应用程序,则必须确保应用程序包的权限至少具有以下密钥:

DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> com.apple.security.app-sandbox com.apple.security.application-groups TEAM_ID.your.bundle.id

TEAM_ID 应替换为 Apple 开发者帐户的Team ID,your.bundle.id 应替换为应用的App ID。

以下权限必须添加到应用程序包的二进制程序和助手中:

DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> com.apple.security.app-sandbox com.apple.security.inherit

应用程序包的 Info.plist 必须包含 ElectronTeamID 键,其值为你的 Apple 开发者团队ID:

... ElectronTeamID TEAM_ID

使用 @electron/osx-sign 时,将通过从证书名称中提取团队 ID 来自动添加 ElectronTeamID 密钥。 如果@electron/osx-sign找不到正确的团队 ID,则可能需要你手动添加此键 。

签署应用程序以进行开发​

要对可以在您的开发机器上运行的应用程序进行签名,您必须使用“Apple Development”证书对其进行签名,并将配置文件传递给 @electron/osx-sign。

electron-osx-sign YourApp.app --identity='Apple Development' --provisioning-profile=/path/to/yourapp.provisionprofile

如果您在没有 @electron/osx-sign 的情况下进行签名,则必须将配置文件放入 YourApp.app/Contents/embedded.provisionprofile。

签名的应用程序只能在通过配置文件注册的机器上运行,这是在提交到 Mac App Store 之前测试签名的应用程序的唯一方法。

签署应用程序以提交到 Mac App Store​

要对将提交到 Mac App Store 的应用程序进行签名,您必须使用“Apple Distribution”证书对其进行签名。 请注意,使用此证书签名的应用程序将无法在任何地方运行,除非它是从 Mac App Store 下载的。

electron-osx-sign YourApp.app --identity='Apple Distribution'为在 Mac App Store 之外分发的应用程序签名​

如果您不打算将应用程序提交到 Mac App Store,您可以签署“开发者 ID 申请”证书。 这样对 App Sandbox 没有要求,如果你不使用 App Sandbox,你应该使用 Electron 的普通 darwin 构建。

electron-osx-sign YourApp.app --identity='Developer ID Application' --no-gatekeeper-assess

通过传递 --no-gatekeeper-assess,@electron/osx-sign 将跳过 macOS GateKeeper 检查,因为您的应用程序通常尚未经过此步骤的公证。

本指南不涉及App Notarization,但您可能希望这样做,否则Apple 可能会阻止用户在Mac App Store 之外使用您的应用程序。

将应用程序提交到 Mac App Store​

使用“Apple Distribution”证书签署应用程序后,您可以继续将其提交到 Mac App Store。

但是,本指南并不能确保您的应用会获得 Apple 的批准; 您仍然需要阅读 Apple 的提交您的应用程序指南,了解如何满足 Mac App Store 的要求。

上传​

应该使用Apple Transporter将已签名的应用程序上传到App Store Connect进行处理,并确保上传之前已经创建记录。

如果您看到类似私有 API 使用的错误,您应该检查应用程序是否使用了 Electron 的 MAS 构建。

提交审核​

在上传后,您应提交您的应用以待审核

MAS 构建限制​

为了让你的应用满足沙箱的所有条件,在 MAS 构建的时候,下面的模块已被禁用:

crashReporterautoUpdater

并且下面的行为也改变了:

一些视频采集功能无效。某些辅助功能无法访问。应用无法检测 DNS 变化。

此外,由于应用沙盒的使用,应用程序可以访问的资源受到严格限制;您可以阅读 应用沙盒 ,了解更多信息。

附加授权​

根据您的应用使用的 Electron API,您可能需要在应用的权限文件中添加额外的权限。 否则,App Sandbox 可能会阻止您使用它们。

网络访问​

启用传出的网络连接,允许你的应用程序连接到服务器:

com.apple.security.network.client

启用传入的网络连接,让你的应用程序打开网络 socket 监听:

com.apple.security.network.server

有关更多 详细信息,请参阅启用网络访问文档。

dialog.showOpenDialog​com.apple.security.files.user-selected.read-only

有关更多详细信息,请参阅"启用访问用户选择的文件"文档。

dialog.showSaveDialog​com.apple.security.files.user-selected.read-write

有关更多详细信息,请参阅"启用访问用户选择的文件"文档。

Electron 使用的加密算法​

根据你发布应用所在的国家或地区,你可能需要提供您软件使用的加密算法的信息。 更多信息,请参阅 加密导出合规性文档 。

Electron 使用下列加密算法:

AES - NIST SP 800-38A, NIST SP 800-38D, RFC 3394HMAC - FIPS 198-1ECDSA - ANS X9.62–2005ECDH - ANS X9.63–2001HKDF - NIST SP 800-56CPBKDF2 - RFC 2898RSA - RFC 3447SHA - FIPS 180-4Blowfish - https://www.schneier.com/cryptography/blowfish/CAST - RFC 2144, RFC 2612DES - FIPS 46-3DH - RFC 2631DSA - ANSI X9.30EC - SEC 1IDEA - "On the Design and Security of Block Ciphers" book by X. LaiMD2 - RFC 1319MD4 - RFC 6150MD5 - RFC 1321MDC2 - ISO/IEC 10118-2RC2 - RFC 2268RC4 - RFC 4345RC5 - https://people.csail.mit.edu/rivest/Rivest-rc5rev.pdfRIPEMD - ISO/IEC 10118-3


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有